fix: align parser with old extension data format#115
Merged
Conversation
The parser was not correctly handling the data format produced by the old OCAP extension (OcapReplaySaver2). This fixes three format mismatches: 1. Marker positions: Old extension produces [frameNum, [x,y], dir, ?alpha] but parser expected [[x,y,z], frameNum, dir, alpha]. Added detection to handle both formats. 2. Side index mapping: Old extension uses BIS_fnc_sideID where 0=EAST, 1=WEST, but parser had them swapped. Also added support for -1=GLOBAL. 3. Event format: Old extension uses [frameNum, type, victimId, [killerId, weaponName], distance] for killed/hit events, but parser expected separate fields. Added format detection based on whether index 3 is an array.
Add comprehensive test coverage for: - Old extension marker position format [frameNum, [x,y], dir, ?alpha] - Old extension killed/hit event format [frameNum, type, victimId, [killerId, weapon], distance] - Integration tests parsing markers and events with old extension format - Both alternative and old extension formats to ensure backward compatibility
Add comprehensive edge case tests for: - Parse function: invalid entity/event/marker/time array types - parseEvent: non-combat events with message, float distance at index 4, events with only source, old extension events with empty/partial arrays - Entity with nil position data All parser_v1.go functions now have 100% statement coverage.
Merging this branch will decrease overall coverage
Coverage by fileChanged files (no unit tests)
Please note that the "Total", "Covered", and "Missed" counts above refer to code statements instead of lines of code. The value in brackets refers to the test coverage of that file in the old version of the code. Changed unit test files
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
[frameNum, [x,y], dir, ?alpha][frameNum, type, victimId, [killerId, weaponName], distance]The parser was not correctly handling the data format produced by the old OCAP extension (OcapReplaySaver2). This ensures backward compatibility with existing mission recordings.
Test plan